Sidebar engine, object model and schema

ABSTRACT

An engine is provided for displaying an application for hosting a second application. The hosting application can be a sidebar on a display. The engine can contain a part or program which can include a manifest file, a definition file and/or a script file. The manifest file may contain a pointer to at least one of the definition file and the script file. The engine may also contain a loader that can locate the definition file and/or script file (e.g., via pointers in the manifest file) and load the definition file and/or script files of the part for processing. The engine may also execute script associated with the part and convert an object model into a user interface which can be displayed at a predetermined location on a display or docked onto a sidebar. The user interface can further be manipulated or relocated within the sidebar or removed (i.e., undocked) from the sidebar. The sidebar may be exploded or imploded with the corresponding parts on the sidebar displayed on the desktop or another application (exploded) or returned to the sidebar (imploded).

CROSS-REFERENCE TO RELATED APPLICATION

The present application is a continuation of U.S. application Ser. No.11/206,094, filed Aug. 18, 2005, the entirety of which is hereinincorporated by reference. Related U.S. Pat. No. 7,568,165, issued onJul. 28, 2009, is also a continuation of the '094 application.

BACKGROUND

With the current explosion of information available to a computer user,it has become increasingly difficult to keep the information organizedand available to the user. This is particularly true when the user alsouses the computer to obtain information and to accomplish other computertasks at the same time. For example, a user may wish to write a documentin a word processing application or a spreadsheet application but mayalso wish to receive information simultaneously. If a user is working inthe word processing application, for example, the application window ofthe word processing program obscures other applications that may bedisplayed on the display. This impedes access to the other informationthat might have been displayed on the display. As a result, the userloses access to the desired information.

This problem is heightened when the information sought is dynamicinformation that might be subject to frequent changes. Some examples ofsuch information include weather conditions in any of a variety oflocations, obtaining the time, sports scores, breaking news events,stock quotes, traffic information, or mass transit status updates, toname a few. For example, a user may be working in a word processingapplication but still may wish to receive continuous updates on trafficconditions, particularly if the user plans to go out on the roads in thenear future. However, the displayed word processing application windowmay cover the traffic information on the display making the trafficinformation inaccessible to the user. As such, the user cannot make histravel plans ahead of time without first having to either close and openwindows or at least rearrange windows on the desktop. This would be atime-consuming task for the user.

In addition, there is a limited amount of space on the display such thatwith multiple types of desired information, screen space would rapidlybecome depleted. The window of an application that the user is currentlyusing would very likely obscure at least some of the application windowsproviding the desired information. For example, a user may wish toreceive traffic updates, stock quote information on selected securities,and weather information. However, while working in a word processingapplication, for example, the desired traffic, stock and weatherinformation would be obscured behind the active window. Thus, the userwould not be apprised of the latest traffic or weather information andwould be unprepared for the conditions outside or on the road. Likewise,the user would not be apprised of the price of his selected securitiesor other requested information. This might lead to losses in his stockportfolio, among other things.

Therefore, there exists a need in the art for a system and method forhosting, docking and/or undocking applications on another application topresent information to a user. There is also a need to provide dockingand undocking of applications in a easy-to-use and user-friendly manner.

SUMMARY

The system and method enables the display of content of an applicationwithin the display of another application, docking and undocking of anapplication in another application.

In one aspect, a representation of a part or program can be displayed ona computer display. The representation can also be displayed on asidebar, docked to the sidebar, undocked from the sidebar, orarranged/re-arranged on the sidebar.

In another aspect, a system is provided containing a part or program,the part or program can contain a file containing pointers to otherfiles associated with the part or program and other files containingcode or script associated with the part. The system can further includean engine for locating files associated with the part or program,loading the located files and executing the files.

In another aspect, a display element is provided that can host therepresentation of the part of program. Selection of the part or programin the display element can cause the part or program to be docked onto asecond application program display. The second application can be asidebar.

In another aspect, a computer-readable medium is provided withcomputer-executable code stored thereon for providing a representationof a user interface on a display.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example of a system for implementing the inventionwhich includes a general purpose computing device in the form of acomputer.

FIGS. 2A-2B are block diagrams illustrating components of a part,sidebar and user interface and schema for management of parts.

FIG. 3 illustrates an example of a definition file.

FIG. 4A illustrates an example of a user interface for displaying a listof parts for display.

FIGS. 4B-4C illustrate an example of undocking a part from a sidebar.

FIGS. 5 and 6 illustrate an example of selecting a part from a partpicker and docking the selected part to a sidebar.

FIG. 7 illustrates another example of docking a part on a sidebar.

FIGS. 8A-8C illustrate examples of management of overflow of parts on asidebar.

FIGS. 9A-9B illustrate an example of minimizing a sidebar.

FIG. 10 illustrates a computer desktop containing parts and a minimizedsidebar.

DETAILED DESCRIPTION

The examples may be implemented in an operating environment. FIG. 1illustrates an example of a suitable operating environment 100 in whichaspects may be implemented. The operating environment 100 is only oneexample of a suitable operating environment and is not intended tosuggest any limitation as to the scope of use or functionality. Otherwell known computing systems, environments, and/or configurations thatmay be suitable include, but are not limited to, personal computers,server computers, hand-held or laptop devices, multiprocessor systems,microprocessor-based systems, programmable consumer electronics, networkPCs, minicomputers, mainframe computers, distributed computingenvironments that include any of the above systems or devices, and thelike.

FIG. 1 illustrates an example of a suitable computing system environment100 for implementation. The computing system environment 100 is only oneexample of a suitable computing environment and is not intended tosuggest any limitation as to the scope of use or functionality. Neithershould the computing environment 100 be interpreted as having anydependency or requirement relating to any one or combination ofcomponents illustrated in the exemplary operating environment 100.

The invention is operational with numerous other general purpose orspecial purpose computing system environments or configurations.Examples of well known computing systems, environments, and/orconfigurations that may be suitable for use with the invention include,but are not limited to, personal computers, server computers, hand-heldor laptop devices, multiprocessor systems, microprocessor-based systems,programmable consumer electronics, network PCs, minicomputers, mainframecomputers, distributed computing environments that include any of theabove systems or devices, and the like.

With reference to FIG. 1, an illustrative system includes a generalpurpose computing device in the form of a computer 110. Components ofcomputer 110 may include, but are not limited to, a processing unit 120,a system memory 130, and a system bus 121 that couples various systemcomponents including the system memory to the processing unit 120. Thesystem bus 121 may be any of several types of bus structures including amemory bus or memory controller, a peripheral bus, and a local bus usingany of a variety of bus architectures. By way of example, and notlimitation, such architectures include Industry Standard Architecture(ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA)bus, Video Electronics Standards Association (VESA) local bus, andPeripheral Component Interconnect (PCI) bus also known as Mezzanine bus.

Computer 110 typically includes a variety of computer readable media.Computer readable media includes both volatile and nonvolatile media,removable and non-removable media. By way of example, and notlimitation, computer readable media may comprise computer storage mediaand communication media and includes, but is not limited to, RAM, ROM,EEPROM, flash memory or other memory technology, CD-ROM, digitalversatile disks (DVD) or other optical disk storage, magnetic cassettes,magnetic tape, magnetic disk storage or other magnetic storage devices,or any other medium which can be used to store the desired informationand which can accessed by computer 110. Communication media typicallyembodies computer readable instructions, data structures, programmodules or other data in a modulated data signal such as a carrier waveor other transport mechanism and includes any information deliverymedia. The term “modulated data signal” means a signal that has one ormore of its characteristics set or changed in such a manner as to encodeinformation in the signal. By way of example, and not limitation,communication media includes wired media such as a wired network ordirect-wired connection, and wireless media such as acoustic, RF,infrared and other wireless media. Combinations of the any of the aboveshould also be included within the scope of computer readable media.

The system memory 130 includes computer storage media in the form ofvolatile and/or nonvolatile memory such as read only memory (ROM) 131and random access memory (RAM) 132. A basic input/output system 133(BIOS), containing the basic routines that help to transfer informationbetween elements within computer 110, such as during start-up, istypically stored in ROM 131. RAM 132 typically contains data and/orprogram modules that are immediately accessible to and/or presentlybeing operated on by processing unit 120. By way of example, and notlimitation, FIG. 1 illustrates operating system 134, applicationprograms 135, other program modules 136, and program data 137.

The computer 110 may also include other removable/non-removable,volatile/nonvolatile computer storage media. By way of example only,FIG. 1 illustrates a hard disk drive 140 that reads from or writes tonon-removable, nonvolatile magnetic media, a magnetic disk drive 151that reads from or writes to a removable, nonvolatile magnetic disk 152,and an optical disk drive 155 that reads from or writes to a removable,nonvolatile optical disk 156 such as a CD ROM or other optical media.Other removable/non-removable, volatile/nonvolatile computer storagemedia that can be used in the exemplary operating environment include,but are not limited to, magnetic tape cassettes, flash memory cards,digital versatile disks, digital video tape, solid state RAM, solidstate ROM, and the like. The hard disk drive 141 is typically connectedto the system bus 121 through an non-removable memory interface such asinterface 140, and magnetic disk drive 151 and optical disk drive 155are typically connected to the system bus 121 by a removable memoryinterface, such as interface 150.

The drives and their associated computer storage media discussed aboveand illustrated in FIG. 1, provide storage of computer readableinstructions, data structures, program modules and other data for thecomputer 110. In FIG. 1, for example, hard disk drive 141 is illustratedas storing operating system 144, application programs 145, other programmodules 146, and program data 147. Note that these components can eitherbe the same as or different from operating system 134, applicationprograms 135, other program modules 136, and program data 137. Operatingsystem 144, application programs 145, other program modules 146, andprogram data 147 are given different numbers here to illustrate that, ata minimum, they are different copies. A user may enter commands andinformation into the computer 20 through input devices such as akeyboard 162 and pointing device 161, commonly referred to as a mouse,trackball or touch pad. Other input devices (not shown) may include amicrophone, joystick, game pad, satellite dish, scanner, or the like.These and other input devices are often connected to the processing unit120 through a user input interface 160 that is coupled to the systembus, but may be connected by other interface and bus structures, such asa parallel port, game port or a universal serial bus (USB). A monitor191 or other type of display device is also connected to the system bus121 via an interface, such as a video interface 190. In addition to themonitor, computers may also include other peripheral output devices suchas speakers 197 and printer 196, which may be connected through a outputperipheral interface 190.

The computer 110 may operate in a networked environment using logicalconnections to one or more remote computers, such as a remote computer180. The remote computer 180 may be a personal computer, a server, arouter, a network PC, a peer device or other common network node, andtypically includes many or all of the elements described above relativeto the computer 110, although only a memory storage device 181 has beenillustrated in FIG. 1. The logical connections depicted in FIG. 1include a local area network (LAN) 171 and a wide area network (WAN)173, but may also include other networks. Such networking environmentsare commonplace in offices, enterprise-wide computer networks, intranetsand the Internet.

When used in a LAN networking environment, the computer 110 is connectedto the LAN 171 through a network interface or adapter 170. When used ina WAN networking environment, the computer 110 typically includes amodem 172 or other means for establishing communications over the WAN173, such as the Internet. The modem 172, which may be internal orexternal, may be connected to the system bus 121 via the user inputinterface 160, or other appropriate mechanism. In a networkedenvironment, program modules depicted relative to the computer 110, orportions thereof, may be stored in the remote memory storage device. Byway of example, and not limitation, FIG. 1 illustrates remoteapplication programs 185 as residing on memory device 181. It will beappreciated that the network connections shown are exemplary and othermeans of establishing a communications link between the computers may beused.

In one example, a computer application is provided for providing desireddata. The application may be provided in a remote execution environment.Examples of such a remote execution environment may include but are notlimited to a web browser, a Terminal Services Desktop or a Virtual PCDesktop. The application can display a window, icon, or other displayelement on a computer display in which information can be presented. Forexample, the application may display a small window on a displaycontaining any type of desired information. Such information caninclude, for example, traffic information, weather information, newsevents, sports scores, time of day in different time zones, etc. Theseapplications may be any type of data file such as but not limited to aZIP file or CAB file, and are sometimes referred to as “parts,” widgets,or gadgets, which are described in more detail herein.

A user can dock a part (or gadget or widget) to an application todisplay the part at a predetermined location on a computer display. Manycomputer applications can be used to dock a part. For example, a partcan be docked to an application window of a computer application (e.g.,a sidebar). The application window of a sidebar application canencompass, for example, a vertical rectangular area along a side of thecomputer display (e.g., the right side). However, the application windowcan be of any shape or configuration and can be located at any desiredlocation on the computer display. A part that is docked on a sidebar canalso be removed or undocked from the sidebar. Also, multiple instancesof one part may be displayed in the sidebar (e.g., a weather partdisplayed in multiple instances, each instance corresponding to theweather in a particular location).

FIG. 2 is a block diagram illustrating the part with the sidebar anduser interface (UI). The part 201 communicates information to a sidebarengine 202 which also exchanges information with a User Interface (UI)203. Through these interactions, a part can be displayed at a desiredlocation on a display or in conjunction with other parts on a display.Parts can also be docked to a sidebar or undocked from the sidebar.

FIG. 2B illustrates an example of one suitable schema in which one ormore illustrative aspects may be implemented. Although one particulardesign is provided, functional blocks provided here may be combined,rearranged, separated, or even skipped.

As FIG. 2B illustrates, the part 201 can include a file that lists thecontents of other files that comprise the part. As one example, the filecontaining such information may be a manifest file 301. The manifestfile can also include other information as it pertains to the part. Forexample, the manifest file 301 may contain meta information thatdescribes the part (e.g., name or title of the part). The manifest file301 can also include pointers to other files in the part.

The part 201 may further include a file that contains the script for thepart and a definition file that contains computer code that represents auser interface (UI). In this example, the script for the part 201 can becontained in a script file 304 and the computer code (e.g., XML) thatrepresents or codes the UI can be contained in a definition file suchas, for example, a Part ML (XML) file 302.

The definition file can take many forms. One example of a representativedefinition is illustrated in FIG. 3. Merely to illustrate an example ofa definition file, a Part ML file is illustrated that corresponds to aclock UI containing a second hand, minute hand and hour hand. Theexample of FIG. 3 is merely to illustrate an example of a definitionfile and is not intended to limit the contents of definition files.

The part 201 may further include additional resource files 303 for thepart. These additional resource files 303 may include, for example,image files and/or sound files for the part 201, or text or data files.

A part loader 305 can process and display the part 201 on a computerdisplay. In this example, a part loader 305 is provided that can loadthe part 201 via a loading process. In the loading process of the part201, the part loader 305 may have a pointer to indicate a file path of afile or directory. If a directory is indicated to the part loader 305,the part loader 305 searches within the indicated directory for themanifest file 301 which may itself contain pointers to other files. Thepart loader 305 finds the relevant pointers within the manifest file 301and follows those pointers to locate specific files within the part 201.The part loader 305 can send the specific files that it locates afterfollowing the pointers in the manifest file 301 to other components inthe engine to designated locations depending on the nature of thespecific files as described herein. In one example, the part loader 305may locate Part ML files 302 from the part 201 and send the Part MLfiles 302 to a Part ML engine 306. The part loader 305 may also locatescript files 304 in the part 201 and send these script files 304 to ascript engine 309. Any number of script files 304 and/or Part ML files306 (including none of them) may be located and sent to the respectiveengines (i.e., Part ML engine 306 or script engine 309) by the partloader 305.

As described, the definition file, such as but not limited to Part MLfiles 302 can describe a UI. The part loader 305 locates relevant PartML files 302 in the part 201 and passes the located, relevant Part MLfiles 302 to the Part ML engine 306, which parses the syntax of the PartML files 302. The Part ML Engine 306 thus creates a representation of aPart ML Object Model (OM) corresponding to or described by the Part MLfiles 302, for example, XML to be received in the Part ML Engine 306.The Part ML Engine 306 can then convert the representation into adesired UI and draw the UI on the display. The Part ML Engine 306 mayfurther inject the Part ML OM into the Script Engine 309 in a “hook-upphase”, described in more detail below.

In passing script files 304 located in the part 201 to the script engine309, the part loader 305 streams the text of the script files 304 to thescript engine 309. The script engine 309 parses the script files 304 andruns the script which causes an action or desired event to occur. Inaddition, a System OM 312 and Settings OM 310 may be provided forproviding procedures or routines that may be executed corresponding toan object (i.e., methods). Such methods may be embodied on acomputer-readable format, for example. Further, the System OM 312 mayalso contain information pertaining to characteristics or otherattributes of an object or representation (i.e., properties). Propertiesmay also be embodied on a computer-readable format. Such methods and/orproperties may be used to provide representations of objects on adisplay and the ability to perform functions with the displayed object.

A Settings OM 310 may also be provided as a component of the System OM312, for example, and for storing an instance of the files associatedwith the part 201, such as the manifest file 301, script files 304, PartML Files 302, etc. The files associated with the part 201 can also bereferred to as the “part package.” There can be multiple instances ofthe same part 201 running on a machine at any given time. For example,if a part for providing the time of day is displayed as one instance ina sidebar on a display, the same part for providing the time of day maybe displayed as a second instance in the sidebar to provide the time ina different time zone, for example. The respective settings for eachinstance of the part for the clock can be stored in the Settings OM 310.The settings may further be given a name and name-value pairs can bestored in the Settings OM 310 for easy reference of the settings.

In an example of one phase of processing the part, the Part ML engine306 injects the Part ML OM into the Script Engine 309 and also injectsthe System OM 312 into the Script Engine 309. This phase can be termedthe “hook-up phase.” The functions and methods of the System OM 312,which can be called by the Script Engine 309 or C++ code and the Part MLOM are both injected into the Script Engine 309 which can executescript. The instructions within the script file 304 can be “hooked up”to the Part ML OM file or plurality of Part ML OM in a designatedconfiguration such that when an event is performed, the Part ML OM canfire the event such that the Script File 304 can be executed toaccomplish the event. Thus, in the hook-up phase, the part 201 permitsthe corresponding UI to be hooked up with logic (script) which, in turn,permits the UI to be hooked up to the computer system.

The User Interface (UI) 203 corresponding to the part 201 can bedisplayed on a display. In one example, the UI 203 may include a part UI308, a part picker 307, and a sidebar docking area 311 as illustrated inFIG. 2B and described herein.

A Part UI 308 is defined by the Part ML file 302 and may contain a setof UIs that can be drawn on a display corresponding to the part 201. ThePart UI 308 can take any number of appearances. In one example, the PartUI 308 appears on a display as a window that can be moved around to anydesired location on the display. An author can specify characteristicsof the Part UI 301. Alternatively, at least a portion of the Part UI 308can be defined by the system such that the author dos not alter certaincharacteristics of the Part UI 308. Reserving certain standard aspectsof the Part UI 308 such that an author does not alter the standardaspects may be useful in providing certain portions of the UI that arenecessary or preferred. One example of a Part UI 308 that would bepreferably present is a button or other icon for closing the Part UI308. If a user wishes to close a window for any reason such as to freeup space on the display for other work or because the window is nolonger in use, the user would likely wish to have a means for removingthe window from the display. Also, it would be helpful if the means forremoving the window from the display is a standard display element suchthat the user can easily recognize the display element as the means forremoving the window. Hence, a standard “close box” may be provided withthe Part UI 308 so that the user can easily recognize the close box andcan select the close box to close the window. However, if the authorwere permitted to freely control the characteristics of the close boxassociated with a Part UI 308, then the author could remove the closebox entirely. In that case, the Part UI 308 would be unremovable by theuser.

As another example, a window border may be a predetermined aspect of thePart UI 308 of the part 201. The window border area of an applicationwindow or a UI is often referred to as “chrome”. The chrome offers usersa standard appearance of an application window so that applicationwindows can be easily recognized by all users. Therefore, an author'scontrol of the chrome may be limited so that the chrome is not changedexcessively.

The UI 203 may further include a sidebar docking area 311. The sidebardocking area 311 can have a variety of appearances. For example, thesidebar docking area 311 may appear as a rectangular, circumscribed areaalong a side of a display. A part can be moved to the sidebar dockingarea 311 on the display and docked to the sidebar docking area 311.Multiple parts may be docked in the sidebar docking area 311 at the sametime and may also be arranged within the sidebar docking area 311. Also,any part docked in the sidebar docking area 311 may be removed (i.e.,“undocked”) from the sidebar docking area 311.

In another aspect, the UI 203 may also include a part picker 307. Usinga part picker 307, a user may select a desired part to display from alist of available parts in an interface. The parts may be furtherdisplayed in a predetermined area of the display anywhere on the displaysuch as in a sidebar. In one embodiment, the sidebar is a verticallyoriented area along the right side of the display.

FIG. 4A illustrates an example of a user interface for displaying a listof available parts from which a user may select desired parts fordisplay. This user interface can be termed a “part picker” 414. In thisexample, the part picker 414 is displayed on a computer desktop 401 anddisplays an organization of parts for selection. As FIG. 4A illustrates,the part picker 414 in this example contains a stock quote part 408 (forproviding stock quote information), an air traffic part 409 (forproviding information on air traffic conditions), sports scores part 410(for providing the latest sports results as well as on-going results),weather part 411 (for providing information on weather conditions in anydesired location), time part 412 (for providing the time in any desiredtime zone) and a webcam part 413 (for providing images of a desiredsubject matter). Although illustrated here as a rectangle, the partpicker 414 can be any shape or configuration. The part picker 414 mayalso be located anywhere on the display according to a user'spreference. In one example, the part picker 414 is transparent orsemi-transparent.

From the part picker 414, a user can select desired parts to bedisplayed in a persisted location, such as in a sidebar docking area311. FIG. 4A illustrates a display of the sidebar docking area 311 as arectangular, circumscribed area along the right vertical side of adisplay but the sidebar docking area 311 may be displayed anywhere onthe display and in any configuration. Parts (408, 409, 410, 411, 412,and/or 413) may be selected from the part picker 414 to be docked ordisplayed in the sidebar application display 406 in a variety of waysand the examples provided herein are not intended to be limiting to anyspecific method. For example, a user may select a part from the partpicker 414 with a cursor 407, drag the desired part to another location,and drop the part at the other location. Alternatively, a user canselect a desired part from the part picker 414 by, for example, clickingon the desired part, causing the desired part to be inserted or dockedat another location, such as in the sidebar application display 406.

As FIG. 4A illustrates, parts can be docked on a separate location onthe computer display 401 such as in the sidebar docking area 311. Thesidebar docking area 311 is illustrated in FIG. 4A as a verticallyoriented rectangular region on the right side of a display 401. However,a sidebar docking area can have any shape or configuration. FIG. 4A alsoillustrates parts that are docked on the sidebar docking area 311. Inthis example, the sidebar docking area 311 contains a traffic part 402,a news part 403, a weather part 404 and a time part 405. The trafficpart 402 provides information on traffic and road conditions in an areaof interest, the news part 403 provides late-breaking news. The weatherpart 404 provides weather information in an area or city of interest.The time part 405 provides the time in any desired time zone. Any ofthese parts (402-405) illustrated in FIG. 4A provides up-to-the-minuteinformation that can be updated as the information changes.

Parts may be removed or undocked from the sidebar docking area 311 asillustrated in the example of FIG. 4B. In this example, the news part403 is selected to be undocked from the sidebar docking area 311.Selection of the news part 403 may be accomplished in a variety of ways.In this example, selection of the news part 403 is accomplished byclicking on the news part 403 and dragging with the cursor 407. FIG. 4Cillustrates moving the news part 403 from the sidebar docking area 311to the part picker 414 (i.e., dragging and dropping the news part 403).The sidebar docking area 311 may rearrange the parts remaining in thesidebar docking area 311 after another part is undocked so that theparts are evenly spaced. As seen in the example of FIG. 4C, the trafficpart 402, weather part 404 and time part 405 are rearranged after thenews part 403 is undocked.

Parts may also be added to the sidebar (i.e., docked onto the sidebar)from the part picker. FIG. 5 illustrates an example of docking a partonto a sidebar. In this example, the stock quote part 408 is selected tobe docked onto the sidebar docking area 311. The cursor 407 is used toselect the stock quote part 408 and the stock quote part 408 is draggedto the sidebar docking area 311. When the part 408 overlaps the sidebardocking area 311, the part 408 may be docked onto the sidebar dockingarea 311. As seen in FIG. 6, the stock quote part 408 has been dockedinto the sidebar docking area 311. The parts that are already docked onthe sidebar docking area 311 can be rearranged to accommodate theincoming part 408. FIG. 6 illustrates the traffic part 402, news part403, weather part 404 and time part 405 rearranging to make space forthe stock quote part 408 as the stock quote part 408 is docked onto thesidebar docking area 311.

In FIG. 7, another part 410 is added (i.e., docked) to the sidebardocking area 311. However, in this example, the sidebar docking area 311appears to contain a maximum number of parts as there is insufficientfree space on the sidebar docking area 311 to display all of the parts.Specifically, in this example, the traffic part 402, news part 403,weather part 404, stock quote part 408 and time part 405 all take up theentire sidebar docking area 311 as a sports scores part 410 is draggedonto the sidebar docking area 311. The sidebar docking area 311 can beadjusted to accommodate additional parts in a variety of ways.

FIG. 8A illustrates one example of docking of a part in a sidebar withother docked parts. In this example, the incoming part (in this example,the stock quote part 410) is docked onto the sidebar and another part isautomatically undocked from the sidebar. The undocked part (in thisexample, the time part 405) may be returned to the part picker 414 (notshown) or may be transferred to any desired location. For example, theundocked part may be sent to the desktop. The part that becomes undockedmay be determined by a variety of methods. In one example, the part thatis at the bottom of the displayed sidebar docking area 311 is undockedfrom the sidebar docking area 311. In another example, the leastreferenced part can be undocked from the sidebar docking area 311. Inyet another example, the last part docked onto the sidebar is the partthat is undocked. In still another example, the user may select whichpart to undock through, for example, a dialog box or warning box.

FIG. 8B illustrates another example of managing excess parts on asidebar. In this example the incoming part (e.g., the sports scores part410) is docked onto the sidebar docking area 311 at the location wherethe part was dragged. Because docking of the sports scores part 410results in overcrowding on the sidebar docking area 311. An excess partis removed from the visible display but not undocked from the sidebar inthis example. Rather, the non-visible part is still docked to thesidebar but merely not visible on the display. To view the excesspart(s) not visible on the display, a scroll bar 801 may be providedsuch that a user can scroll up or down to view any desired part that isdocked to the sidebar. Other known scrolling UI's may also oralternatively be used.

FIG. 8C illustrates another example of managing an overflow of parts ona sidebar. In this example, the sports scores part 410 is docked to thesidebar docking area 311. Since this results in insufficient space inthe sidebar docking area 311 to display all parts, an extra part is notdisplayed on the display. Rather, the extra part remains docked in thesidebar docking area 311 but is in a saved part location that is notvisible on the display. In this example, an overflow indicator 802 isdisplayed in the sidebar docking area 311. When the overflow indicator802 is selected (e.g., with the cursor 407), any of the parts inoverflow (in this example, the time part 405) can be displayed.

In another example, a sidebar can be minimized, for example, when extraspace is required on the display. FIG. 9A illustrates a sidebar dockingarea 311 in which five parts are docked (traffic part 402, news part403, weather part 404, stock quote part 408, and time part 405). FIG. 9Billustrates the sidebar docking area 311 of FIG. 9A after the sidebardocking area 311 has been minimized. The location where the sidebardocking area 311 was situated prior to minimization is indicated by thedotted line. In this example, an icon 901 can be used in the system trayfor opening the sidebar again on the display. Selection of the icon 901can cause the sidebar docking area 311 to reappear on the display withthe docked parts.

A sidebar docking area 311 may be exploded or imploded withcorresponding changes in the display of the parts docked on the sidebardocking area 311. A sidebar docking area 311 and corresponding parts canbe “exploded” when the sidebar docking area 311 is removed from thedisplay. Upon exploding of the sidebar docking area 311, the parts thatare docked to the sidebar docking area 311 can be displayed in analternate location, in another application, or on the desktop. Explodingof the sidebar docking area 311 may involve the removal of the displayof the sidebar docking area 311. Examples include minimizing the sidebardocking area (as illustrated in FIGS. 9A and 9B) or quitting the sidebarapplication.

Hence in this example, after exploding (e.g., minimizing or closing) thesidebar docking area 311, the parts that are docked in the sidebardocking area 311 may also be removed from the display. In anotherexample, the parts that are docked in the sidebar docking area 311 arenot removed (i.e., “exploded”) but rather, the parts are “released” ontothe desktop or other desired location on the display so that the partsare displayed on the desktop or other desired location in a seeminglyrandom pattern, or at each port's pre-docked location on the desktop.FIG. 10 illustrates an example of a sidebar docking area 311 having beenremoved from the display (e.g., minimized). An icon 901 appears in thesystem tray such that selection of the icon 901 causes the reappearanceof the sidebar docking area 311 on the display. However, in thisexample, while the sidebar docking area 311 has been removed from thedisplay (e.g., minimized), the parts that were docked in the sidebardocking area 311 are still displayed on the display 401. In thisexample, the traffic part 402, news part 403, weather part 404, timepart 405 and the stock quote part 408 are displayed on the display 401in a random configuration. The parts may alternatively be displayed in aconfiguration that is predetermined or selected by the user.

A sidebar docking area 311 may also be “imploded” by restoring thedisplay of the sidebar docking area 311 on a display. Restoration of thedisplay of the sidebar docking area can be accomplished in a variety ofways. If the sidebar docking area 311 was minimized when “exploded,” thesidebar docking area 311 may be maximized (or otherwise opened) back tothe display. If the sidebar docking area 311 was closed, then thesidebar docking area 311 may be re-launched to restore the display ofthe sidebar docking area 311 on the display. In restoring the sidebardocking area 311, an icon 901 may be selected to cause the sidebardocking area 311 to be displayed again. The parts associated with thesidebar docking area 311 can be displayed as docked onto the sidebardocking area 311 again. The order of the parts in the sidebar dockingarea 311 after the display of the sidebar 206 is returned to the displaymay be random within the sidebar docking area 311 or may bepredetermined. The order of the parts may also be the same as the orderprior to minimizing the sidebar 206, if desired.

Included at the end of this detailed description is an Appendixdescribing examples of functions, notifications, messages and datastructures in a data file for representing a user interfacecorresponding to a program or part. For example, the data structures ofthe Appendix may be embodied in the Part ML file 302 as described.Because the Appendix will be readily understood by persons skilled inthe art, it will not be extensively discussed herein. As can be seen inthe appendix, however, various other messages or data structures can beused as part of a process similar to the examples of FIGS. 4A-4C, FIGS.5-7, FIGS. 8A-8C, FIGS. 9A-9C, and FIG. 10.

It is understood that aspects can take many forms and embodiments.Although the subject matter has been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the subject matter defined in the appended claims is notnecessarily limited to the specific features or acts described above.Rather, the specific features and acts described above are disclosed asexample forms of implementing the claims.

What is claimed is:
 1. A computer-readable storage memory having storedon the memory a data structure for use with a host user interfaceassociated with a host application, said data structure defining arepresentation of a secondary user interface of a secondary applicationwithin a sidebar area of the host user interface, said data structurecomprising: a plurality of part object parameters, each of said partobject parameters representing a property of the secondary userinterface; a part settings object parameter of each part objectparameter, said part settings object parameter representing aconfiguration of the secondary user interface, said part settings objectparameter selected from the group consisting ofRead((String)PropertyName) and IWrite((String)PropertyName,(String)PropertyValue); a display object parameter representing at leastone of an event and a property associated with the secondary userinterface; a display screen object parameter representing at least oneof a property and method of the secondary user interface; and an elementobject parameter representing at least one of an event, method orproperty of the secondary user interface.
 2. The computer-readablestorage media of claim 1 wherein the display object parameter representsat least one of an event, or property, or method associated with thesecondary user interface.
 3. The computer-readable storage media ofclaim 2 wherein the display object parameter event is selected from thegroup consisting of PrimaryScreenChanged( ), ScreenChanged( ), andTerminalServerChanged, and wherein the display object parameter propertyis selected from the group consisting of IsDragFullWindows,IsHighContrast, IsDropShadowEnabled, IsTerminalServerSession, andPrimaryScreen or the group consisting of Height, Left, Top, Width,WorkingHeight, WorkingLeft, WorkingTop, Working Width, DPI,BitsPerPixel, Resolution, DeviceName, and PrimaryScreen.
 4. Thecomputer-readable storage media of claim 1 wherein the display screenobject parameter represents a method of the secondary user interface andis selected from the group consisting of GetBounds( ) andGetWorkingArea( ).
 5. The computer-readable storage media of claim 1wherein the element object parameter represents at least one of anevent, method, or property of the secondary user interface.
 6. Thecomputer-readable storage media of claim 1 wherein the element objectparameter event is selected from the group consisting of DragEnter,DragLeave, Drop, GotFocus, KeyDown, keyUp, LostFocus, MouseEnter,MouseLeave, MouseLeftButtonDown, MouseLeftButtonUp, MouseMove,MouseRightButtonDown, MouseRightButtonUp, and MouseWheel, wherein theelement object parameter method is selected from the group consisting ofShowDialog((String)Message, (String)Title, (String)Type, (Int)Buttons);CreateElement((String)ElementType); (Element)FindChild((String)ElementName);(Collection(Elements))FindChildren((String)ElementName);Insert((Element)Element); Insert((Int)Index, (Element)Element);Remove((Element)Element); and RemoveAt((Int)Index), and wherein theelement object parameter property is selected from the group consistingof Background, Canvas.Bottom, Canvas.Left, Canvas.Right, Canvas.Top,CenterX, CenterY, Cursor, height, IsTabStop, Name, Opacity, Parent,Rotate, TabIndex, Tag, Tooltip, Visibility, Width, and ZOrder.
 7. Thecomputer-readable storage media of claim 1 further comprising anActiveXControl Object parameter representing a property of the secondaryuser interface, wherein the ActiveXControl Object parameter is ObjectId.8. The computer-readable storage media of claim 1 further comprising amachine object parameter representing system properties associated withthe secondary user interface, wherein the machine object parameter isselected from the group consisting of CPUCount, TotalCPUUsage, andTotalMemory.
 9. The computer-readable storage media of claim 1 furthercomprising a system shell object parameter representing at least one ofan event or a method associated with the secondary user interface. 10.The computer-readable storage media of claim 9 wherein the system shellobject parameter event is DirectoryChanged ((String)Path, (FunctionPointer)Function) and wherein the system shell object parameter methodis selected from the group consisting of (System.Shell.Item)ChooseFile((String)Path, (String)Filter); (System.Shell.Item)ChooseFolder((String)Path); (String, RGB) ColorPicker( )Delete((String)Path); Delete((String)Path, (Boolean)Recursively);Exists((String)Path); FriendlyName;(String)GetDirectoryRoot((String)Path); (System.Shell.Item)GetItem((String)Path); Name; Navigate((String)Url); and(System.Shell.Item) SaveFileDialog((String)Path, (String)Filter). 11.The computer-readable storage media of claim 1 further comprising ashell item object parameter representing at least one of a method and aproperty of the secondary user interface.
 12. The computer-readablestorage media of claim 1 wherein the shell item object parameter methodis selected from the group consisting of CreateText((String)Path),Delete((String)Path), MoveToRecycleBin((String)Path),Show((String)Path), InvokeVerb((String)Verb),(Int)GetAttributes((String)Path), and wherein the shell item objectparameter property is selected from the group consisting of Folder,IsLink, ItemType, Link, ModifyDate, Name, Path, Size, Type, andRealShellItem((String)Path).
 13. The computer-readable storage media ofclaim 1 further comprising an event object parameter representing aproperty of the secondary user interface and selected from the groupconsisting of ClickCount, MouseWheelDelta, Handled, is KeyDown, Key,keyState, modifierKeys, and MouseKeyStates.
 14. The computer-readablestorage media of claim 1 further comprising an ActiveXControl Objectparameter representing a property of the secondary user interface,wherein said ActiveXControl Object parameter is ObjectId.
 15. Acomputer-readable storage memory having stored on the memory a datastructure for use with a host user interface associated with a hostapplication, said data structure defining a representation of asecondary user interface of a secondary application within a sidebararea of the host user interface, said data structure comprising: aplurality of part object parameters, each of said part object parametersrepresenting a property of the secondary user interface; a part settingsobject parameter of each part object parameter, said part settingsobject parameter representing a configuration of the secondary userinterface; a display object parameter representing at least one of anevent and a property associated with the secondary user interface; adisplay screen object parameter representing at least one of a propertyand method of the secondary user interface; and an element objectparameter representing at least one of an event, method or property ofthe secondary user interface; wherein upon undocking of the secondaryapplication from the host application, the data structure defines arepresentation of the secondary user interface on a display area outsidethe sidebar area of the host user interface and separate from the hostuser interface.
 16. The computer readable storage media of claim 15wherein the part settings object parameter is selected from the groupconsisting of Read((String)PropertyName) andIWrite((String)PropertyName, (String)PropertyValue).
 17. Acomputer-readable storage memory having stored on the memory a datastructure for use with a host user interface associated with a hostapplication, said data structure defining a representation of asecondary user interface of a secondary application within a sidebararea of the host user interface, said data structure comprising: aplurality of part object parameters, each of said part object parametersrepresenting a property of the secondary user interface; a part settingsobject parameter of each part object parameter, said part settingsobject parameter representing a configuration of the secondary userinterface; a display object parameter representing at least one of anevent and a property associated with the secondary user interface; adisplay screen object parameter representing at least one of a propertyand method of the secondary user interface; and an element objectparameter representing at least one of an event, method or property ofthe secondary user interface; wherein the data structure corresponds toan object model that, when executed, renders the secondary userinterface on a display.
 18. The computer readable storage media of claim17 wherein the part settings object parameter is selected from the groupconsisting of Read((String)PropertyName) andIWrite((String)PropertyName, (String)PropertyValue).
 19. Thecomputer-readable storage media of claim 17 further comprising anActiveXControl Object parameter representing a property of the secondaryuser interface, wherein said ActiveXControl Object parameter isObjectId.